import { get_fav, get_unfav, get_add,get_sub,get_search } from '../utils/api'
import { Toast } from 'antd-mobile';



//生成一个同步收藏动作
function create_collect(params) {
    return { type: 'COLLECT', params }
}
//生成一个同步取消收藏动作
function delete_create_collect(params) {
    return { type: 'CANCEL_COLLECT', params }
}
// 生成 加入购物车同步动作（数量加一）
function create_add_cart_action(params) {
    return { type: 'ADD_CART', params };
}
// 生成 购物车动作（数量减一）
function create_sub_cart_action(params) {
    return { type: 'DELETE_CART', params };
}
// 创建关键词搜索的添加方法的同步action
function create_search_action(params) {
    return { type: 'SEARCHKEY', params }
}
// 创建根据关键词搜索获取的列表的添加方法的同步action
function create_searchkey_action(params) {
    return { type: 'SEARCHKEY_LIST', params }
}




//生成一个异步收藏动作，异步action生成器(是个函数，默认 redux只能处理{}类型的同步action，对于function 类型的异步action 必须借助中间件才能处理)
function create_collect_action(params) {
    let userinfo = localStorage.getItem("userinfo") ? JSON.parse(localStorage.getItem("userinfo")) : {};
    return (dispatch) => {
        get_fav({ userid: userinfo, goodid: params.id }).then((res) => {
            if (res.data.code == 200) {//收藏成功
                //触发同步action，同步到store中
                dispatch(create_collect(params));
            }
        })
    }
}
//生成一个异步取消收藏动作，异步action生成器(是个函数，默认 redux只能处理{}类型的同步action，对于function 类型的异步action 必须借助中间件才能处理)
function create_collect_action_delet(params) {
    let userinfo = localStorage.getItem("userinfo") ? JSON.parse(localStorage.getItem("userinfo")) : {};
    return (dispatch) => {
        get_unfav({ userid: userinfo, goodid: params.id }).then((res) => {
            if (res.data.code == 200) {//取消收藏成功
                //触发同步action，同步到store中
                dispatch(delete_create_collect(params));
            }
        })
    }
}
// 生成异步的 数量加1 动作（是个函数，默认 redux只能处理{}类型的同步action, 对于 function 类型的异步action 必须借助中间件才能处理）
function create_add_cart(params){
    var userinfo=localStorage.getItem('userinfo')?JSON.parse(localStorage.getItem('userinfo')):{}
    return function(dispatch){//这个函数的参数 默认 是 dispatch
        // 发请求，收藏
        get_add({userid:userinfo.id,goodid:params.id}).then((res)=>{
            if(res.data.code==200){
                Toast.show({content: res.data.msg,position: 'center',})
                //触发同步action, 同步到store中
                dispatch(create_add_cart_action(params))
            }
        })
    }
}
// 生成异步的 数量减1 动作（是个函数，默认 redux只能处理{}类型的同步action, 对于 function 类型的异步action 必须借助中间件才能处理）
function creat_cart_action_delete(params){
    let userinfo=localStorage.getItem('userinfo')?JSON.parse(localStorage.getItem('userinfo')):{}
    return function(dispatch){//这个函数的参数 默认 是 dispatch
        // 发请求，收藏
        get_sub({userid:userinfo.id,goodid:params.id}).then((res)=>{
            if(res.data.code==200){
                //触发同步action, 同步到store中
                dispatch(create_sub_cart_action(params))
            }
        })
    }
}
//创建关键词搜索的异步action
function request_add_searchkey(params) {
    return function (dispatch) {
        get_search({ searchkey: params }).then((res) => {
            if (res.data.code === 200) {
                dispatch(create_search_action(params))
                dispatch(create_searchkey_action(res.data.list))
            }
        })
    }
}
export {
    create_collect_action,//创建异步收藏
    create_collect_action_delet,//创建异步取消收藏
    create_add_cart,//创建异步+1
    creat_cart_action_delete,//创建异步-1
    request_add_searchkey//创建异步搜索
}